package algo3.tp1.entrega;

/*
 * Uso leerInt de la clase leerDatos.java para leer la cantidad de filas y columnas como ints separados.
 * Luego uso leerPosFichas de la misma clase para obtener las posiciones ocupadas
 * en forma de ArrayList<Integer>. Creo una matriz de boolean y acomodo las fichas con un for.
 * Creo el Juego usando el constructor Juego:boolean[][] ---> Juego de la clase Juego.java
 *  
 */

import java.util.ArrayList;
import java.util.LinkedList;

import algo3.tp1.ejercicios.Ejercicio3;
import algo3.tp1.ejercicios.Juego;
import algo3.tp1.ejercicios.Movimiento;

public class Ejercicio3Entrega {

	public static void main(String[] args) {

		Integer cantFilas;
		Integer cantColum;
		ArrayList<Integer> posFichas;

		LectorDatos l = new LectorDatos();
		l.abrirTestcaseEj3();
		EscritorDatos g = new EscritorDatos();
		g.abrirArchivoOutEj3();

		while (l.hayLineas()) {

			// leo las dimensiones
			cantFilas = l.leerInt();
			cantColum = l.leerInt();

			// leo y devuelvo los valores como ArrayList de integers
			posFichas = l.leerPosFichas();

			// creo la matriz
			boolean[][] matrizTablero = new boolean[cantFilas][cantColum];

			// le ubico las fichas
			int i = 0;
			while (i < posFichas.size()) {
				matrizTablero[posFichas.get(i) - 1][posFichas.get(i + 1) - 1] = true;
				// resto 1 porque las matrices del input se inicializan en 1,1
				i = i + 2;
			}

			/*
			 * muestro la matriz (tablero) con coordenadas
			 * System.out.println("\nTablero:"); System.out.print("0 "); for(int
			 * f = 1; f <= cantColum; f++) System.out.print(f + " ");
			 * System.out.println(); for(int j = 0; j < cantFilas; j++){
			 * System.out.print(j+1 + " "); for(int k = 0; k < cantColum; k++){
			 * 
			 * if (matrizTablero[j][k] == true) System.out.print("O "); else
			 * System.out.print("- "); } System.out.print("\n"); }
			 */

			// Resolver
			Juego t = new Juego(matrizTablero);
			Ejercicio3 e = new Ejercicio3();

			// Mostrar
			LinkedList<Movimiento> movimientos = e.resolver(t);
			for (int r = 0; r < movimientos.size(); r++) {
				g.guardarString(movimientos.get(r).toString() + " ");
			}
			g.guardarString("\n");
		}

		g.cerrarArchivoOut();
		l.cerrarTestcase();
	}
}
